// lib/providers/home_list_provider.dart (修正后)

import 'dart:async';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../data/api_service.dart';
import '../data/models/collection_item_model.dart';

// **特性3: AsyncNotifierProvider - 用于管理异步数据（如网络请求）**
// 这是处理从 API 获取数据并可能需要用户交互（如刷新）的最佳方式。

// 1. 定义 AsyncNotifier 类
class HomeListNotifier extends AsyncNotifier<List<CollectionItemData>> {
  @override
  Future<List<CollectionItemData>> build() async {
    // `build` 方法必须返回一个 Future。
    // Riverpod 会自动处理这个 Future 的生命周期：loading, data, error 状态。
    // 这里我们调用模拟的 API 来获取初始数据。
    return ApiService().fetchHomeList();
  }

  // 2. 定义业务逻辑，例如下拉刷新
  Future<void> refresh() async {
    // 将当前状态设置为加载中
    state = const AsyncValue.loading();
    try {
      // 重新获取数据
      final newList = await ApiService().fetchHomeList();
      state = AsyncValue.data(newList);
    } catch (e, s) {
      state = AsyncValue.error(e, s);
    }
  }
}

// 3. 创建 AsyncNotifierProvider
final homeListProvider = AsyncNotifierProvider<HomeListNotifier, List<CollectionItemData>>(HomeListNotifier.new);
